API Documentation
Public Member Functions | List of all members
nkScripts::Environment Class Referencefinal

Defines an environment in which scripts can execute. More...

Public Member Functions

 Environment ()
 
 ~Environment ()
 
const ExecutionResultgetLastExecutionResult () const
 
const char * getName () const
 
void setEnvironmentFor (INTERPRETER interpretType)
 
void setName (const char *name)
 
bool execute (const Script &script)
 
void requestGarbageCollection ()
 
void setVar (const char *name, bool value)
 
void setVar (const char *name, int value)
 
void setVar (const char *name, float value)
 
void setVar (const char *name, double value)
 
void setVar (const char *name, const char *value)
 
void setVar (const char *name, const ScriptObjectReference &value)
 
void setObject (const char *name, const char *userTypeName, void *value)
 
bool isVarSet (const char *name)
 
bool getVar (const char *name, bool defaultValue)
 
int getVar (const char *name, int defaultValue)
 
float getVar (const char *name, float defaultValue)
 
double getVar (const char *name, double defaultValue)
 
const char * getVar (const char *name, const char *defaultValue)
 
ScriptObjectReference getVar (const char *name)
 
void * getObject (const char *name, const char *userTypeName=nullptr)
 
ScriptObjectReference getScriptFunction (const char *name)
 
FunctionsetFunc (const char *name)
 
bool isFuncSet (const char *name)
 
FunctiongetFunc (const char *name)
 
UserTypesetUserType (const char *name)
 
bool isUserTypeSet (const char *name)
 
UserTypegetUserType (const char *name)
 
NamespacesetNamespace (const char *name)
 
bool isNamespaceSet (const char *name)
 
NamespacegetNamespace (const char *name)
 
bool callScriptFunction (const ScriptObjectReference &reference, const DataStack &args, DataStack &expectedOutput)
 
std::vector< unsigned char > serializeScriptObject (const ScriptObjectReference &reference, bool forwardUserDataOwnership=false)
 
ScriptObjectReference deserializeScriptObject (const std::vector< unsigned char > &object)
 

Detailed Description

Defines an environment in which scripts can execute.

It can be seen as a context in which structures and objects can be defined and accessed.

Constructor & Destructor Documentation

◆ Environment()

nkScripts::Environment::Environment ( )

Constructor.

◆ ~Environment()

nkScripts::Environment::~Environment ( )

Destructor.

Member Function Documentation

◆ getLastExecutionResult()

const ExecutionResult& nkScripts::Environment::getLastExecutionResult ( ) const
Returns
The last execution result.

◆ getName()

const char* nkScripts::Environment::getName ( ) const
Returns
The name attached to the environment.

◆ setEnvironmentFor()

void nkScripts::Environment::setEnvironmentFor ( INTERPRETER  interpretType)

Sets the interpreter the environment should be ready for.

Parameters
interpretTypeThe type of interpreter to use.

◆ setName()

void nkScripts::Environment::setName ( const char *  name)

Sets the name of the environment.

Parameters
nameThe name to set.
Remarks
In theory, this should not be called from external code, but only from the EnvironmentManager.

◆ execute()

bool nkScripts::Environment::execute ( const Script script)

Requests the execution of a script within the environment.

Parameters
scriptThe script to execute.
Returns
Whether the execution went fine (true) or not (false). If an error occurred, result can be checked through getLastExecutionResult().

◆ requestGarbageCollection()

void nkScripts::Environment::requestGarbageCollection ( )

Requests a garbage collection within the environment.

◆ setVar() [1/6]

void nkScripts::Environment::setVar ( const char *  name,
bool  value 
)

Sets a variable within the environment.

Parameters
nameThe name of the variable to set.
valueThe value to assign to it.

◆ setVar() [2/6]

void nkScripts::Environment::setVar ( const char *  name,
int  value 
)

Sets a variable within the environment.

Parameters
nameThe name of the variable to set.
valueThe value to assign to it.

◆ setVar() [3/6]

void nkScripts::Environment::setVar ( const char *  name,
float  value 
)

Sets a variable within the environment.

Parameters
nameThe name of the variable to set.
valueThe value to assign to it.

◆ setVar() [4/6]

void nkScripts::Environment::setVar ( const char *  name,
double  value 
)

Sets a variable within the environment.

Parameters
nameThe name of the variable to set.
valueThe value to assign to it.

◆ setVar() [5/6]

void nkScripts::Environment::setVar ( const char *  name,
const char *  value 
)

Sets a variable within the environment.

Parameters
nameThe name of the variable to set.
valueThe value to assign to it.

◆ setVar() [6/6]

void nkScripts::Environment::setVar ( const char *  name,
const ScriptObjectReference value 
)

Sets a variable within the environment.

Parameters
nameThe name of the variable to set.
valueThe value to assign to it.

◆ setObject()

void nkScripts::Environment::setObject ( const char *  name,
const char *  userTypeName,
void *  value 
)

Sets an object within the environment.

Parameters
nameThe name of the object to set.
userTypeNameThe type name of the user data to set.
valueThe user data to assign to it.

◆ isVarSet()

bool nkScripts::Environment::isVarSet ( const char *  name)

Checks whether a variable is existing in the environment.

Parameters
nameThe name of the variable to check.

◆ getVar() [1/6]

bool nkScripts::Environment::getVar ( const char *  name,
bool  defaultValue 
)

Retrieves a variable, if it exists.

Parameters
nameThe name of the variable to retrieve the value from.
defaultValueThe default value to return if no variable of this name exists, or if the variable is not from requested type.
Returns
The variable value in the environment if it exists and is of requested type.

◆ getVar() [2/6]

int nkScripts::Environment::getVar ( const char *  name,
int  defaultValue 
)

Retrieves a variable, if it exists.

Parameters
nameThe name of the variable to retrieve the value from.
defaultValueThe default value to return if no variable of this name exists, or if the variable is not from requested type.
Returns
The variable value in the environment if it exists and is of requested type.

◆ getVar() [3/6]

float nkScripts::Environment::getVar ( const char *  name,
float  defaultValue 
)

Retrieves a variable, if it exists.

Parameters
nameThe name of the variable to retrieve the value from.
defaultValueThe default value to return if no variable of this name exists, or if the variable is not from requested type.
Returns
The variable value in the environment if it exists and is of requested type.

◆ getVar() [4/6]

double nkScripts::Environment::getVar ( const char *  name,
double  defaultValue 
)

Retrieves a variable, if it exists.

Parameters
nameThe name of the variable to retrieve the value from.
defaultValueThe default value to return if no variable of this name exists, or if the variable is not from requested type.
Returns
The variable value in the environment if it exists and is of requested type.

◆ getVar() [5/6]

const char* nkScripts::Environment::getVar ( const char *  name,
const char *  defaultValue 
)

Retrieves a variable, if it exists.

Parameters
nameThe name of the variable to retrieve the value from.
defaultValueThe default value to return if no variable of this name exists, or if the variable is not from requested type.
Returns
The variable value in the environment if it exists and is of requested type.

◆ getVar() [6/6]

ScriptObjectReference nkScripts::Environment::getVar ( const char *  name)

Retrieves a variable, if it exists.

Parameters
nameThe name of the variable to retrieve the value from.
Returns
A reference over the variable in the environment.

◆ getObject()

void* nkScripts::Environment::getObject ( const char *  name,
const char *  userTypeName = nullptr 
)

Retrieves an object if it exists.

Parameters
nameThe name of the variable to retrieve the object from.
userTypeNameIf needed, the type name can be specified to ensure pointer returned is of the right type.
Returns
A pointer over the user data linked, if it exists and is of the type specified.
Remarks
It is possible to leave the type name empty, preventing the retrieval from checking the user data type before returning it.

◆ getScriptFunction()

ScriptObjectReference nkScripts::Environment::getScriptFunction ( const char *  name)

Retrieves a reference over a function defined in the scripting environment.

Parameters
nameThe name of the function to retrieve.
Returns
A reference over the requested function, if it exists.

◆ setFunc()

Function* nkScripts::Environment::setFunc ( const char *  name)

Sets a function within the environment.

Parameters
nameThe name of the function to set.
Returns
The function information holder to populate.
Remarks
The environment owns the Function memory. External code should not delete it.

◆ isFuncSet()

bool nkScripts::Environment::isFuncSet ( const char *  name)

Checks whether a function is existing within the environment.

Parameters
nameThe name of the function to check.
Returns
Whether the function exists (true) or no (false).

◆ getFunc()

Function* nkScripts::Environment::getFunc ( const char *  name)
Parameters
nameThe name of the function to retrieve.
Returns
The function requested if it exists, nullptr else.

◆ setUserType()

UserType* nkScripts::Environment::setUserType ( const char *  name)

Sets a user type within the environment.

Parameters
nameThe name of the user type to set. It is possible to shortcut into namespaces using a syntax like ns0::ns1::UserTypeName.
Returns
The user type information holder to populate.
Remarks
The environment owns the UserType memory. External code should not delete it.

◆ isUserTypeSet()

bool nkScripts::Environment::isUserTypeSet ( const char *  name)

Checks whether a user type is existing within the environment.

Parameters
nameThe name of the user type to check.
Returns
Whether the user type exists (true) or not (false).

◆ getUserType()

UserType* nkScripts::Environment::getUserType ( const char *  name)
Parameters
nameThe name of the user type to retrieve.
Returns
The user type requested if it exists, nullptr else.

◆ setNamespace()

Namespace* nkScripts::Environment::setNamespace ( const char *  name)

Sets a namespace within the environment.

Parameters
nameThe name of the namespace to set.
Remarks
The environment owns the Namespace memory. External code should not delete it.

◆ isNamespaceSet()

bool nkScripts::Environment::isNamespaceSet ( const char *  name)

Checks whether a namespace is existing within the environment.

Parameters
nameThe name of the namespace to check.
Returns
Whether the namespace exists (true) or not (false).

◆ getNamespace()

Namespace* nkScripts::Environment::getNamespace ( const char *  name)
Parameters
nameThe name of the namespace to retrieve.
Returns
The namespace requested if it exists, nullptr else.

◆ callScriptFunction()

bool nkScripts::Environment::callScriptFunction ( const ScriptObjectReference reference,
const DataStack args,
DataStack expectedOutput 
)

Calls a script function from the C++ environment.

Parameters
referenceThe function reference, in the environment.
argsThe arguments to provide to the function, in a stack.
expectedOutputA ready stack that will receive the output of the called function.
Returns
If the function could successfully be called (true) or not (false).

◆ serializeScriptObject()

std::vector<unsigned char> nkScripts::Environment::serializeScriptObject ( const ScriptObjectReference reference,
bool  forwardUserDataOwnership = false 
)

Serializes an object from the environment into a binary buffer. This can be used to pass a script object from one environment to another, for instance.

Parameters
referenceThe reference in the environment of the object to serialize.
forwardUserDataOwnershipWhether the user data, defined by user types, should also forward their ownership to the serialization object (true) or not (false). \ This will ultimately transmit the ownsership to the environment where it is deserialized.
Returns
The binary buffer containing the serialized data.

◆ deserializeScriptObject()

ScriptObjectReference nkScripts::Environment::deserializeScriptObject ( const std::vector< unsigned char > &  object)

Deserializes a binary buffer into a new object within the environment.

Parameters
objectThe serialized binary buffer to deserialize.
Returns
A reference over the object created within the environment, using the serialized information.

The documentation for this class was generated from the following file: